
//重排字符串（将字符串排序成没有任意两个相同的字符是相邻的）
int main()
{
    int n = 0;
    string str;
    cin >> n;
    cin >> str;
    int cnt[26] = { 0 };
    string res = "";
    res.resize(n);
    int maxCount = INT_MIN;
    char maxChar = 0;
    for (const auto& ch : str)
    {
        cnt[ch - 'a']++;
        if (cnt[ch - 'a'] > maxCount) {
            maxCount = cnt[ch - 'a'];
            maxChar = ch;
        }
    }
    //考虑str的长度为奇数或偶数的情况
    if (maxCount > (n + 1) / 2) {
        cout << "NO";
    }
    else {
        cout << "YES" << endl;
        int index = 0;
        /*while (cnt[maxChar - 'a']--)  //错误的
        {
            res[index] = maxChar;
            index += 2;
        }*/
        while (maxCount--)
        {
            res[index] = maxChar;
            index += 2;
        }
        for (int i = 0;i < 26;++i)
        {
            while ((i + 'a' != maxChar) && cnt[i]--)
            {
                if (index > n) {
                    index = 1;
                }
                res[index] = i + 'a';
                index += 2;
            }
        }
        cout << res;
    }

    return 0;
}